package 中等.脑筋急转弯;

/**
 * 给你一个下标从 0 开始、长度为 n 的二进制字符串 s ，你可以对其执行两种操作：
 * 选中一个下标 i 并且反转从下标 0 到下标 i（包括下标 0 和下标 i ）的所有字符，成本为 i + 1 。
 * 选中一个下标 i 并且反转从下标 i 到下标 n - 1（包括下标 i 和下标 n - 1 ）的所有字符，成本为 n - i 。
 * 返回使字符串内所有字符 相等 需要的 最小成本 。
 * 反转 字符意味着：如果原来的值是 '0' ，则反转后值变为 '1' ，反之亦然。
 *
 * @ https://leetcode.cn/problems/minimum-cost-to-make-all-characters-equal/description/?envType=daily-question&envId=2025-03-27
 * @date 2025/03/29
 */
public class 使所有字符相等的最小成本_2712 {

    public static void main(String[] args) {

    }

    /**
     * 如果两个相邻的字符不一样，要么翻转 [0,i-1] 要么翻转 [i,n-1]
     */
    public long minimumCost(String s) {
        long ans = 0;

        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) != s.charAt(i - 1)) {
                ans += Math.min(i, s.length() - i);

            }
        }

        return ans;
    }

}
